searl_sokwedb
2 months agoSimplify because events only fire on update
Karl O. Pinc kop@karlpinc.com [Thu, 4 Jun 2026 18:00:01 +0000 (18:00 +0000)]
Simplify because events only fire on update

2 months agoSupport groom scanning at the feeding station as an EVENTS row
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 21:26:21 +0000 (21:26 +0000)]
Support groom scanning at the feeding station as an EVENTS row

Uses the sdb_groom_scan_a EVENTS.Behavior code.  Document rules
and implement.

2 months agoCreate, document, index, and trigger ARRIVALS_A
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 20:29:59 +0000 (20:29 +0000)]
Create, document, index, and trigger ARRIVALS_A

This is the feeding station arrival and departure "event detail"
table, that goes with the ATTENDANCE table.  The per-presence,
per-date, information has moved to this table.

2 months agoRemove arrival related information from ATTENDANCE
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 20:22:32 +0000 (20:22 +0000)]
Remove arrival related information from ATTENDANCE

2 months agoFix check for unique roles per event
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 20:14:14 +0000 (20:14 +0000)]
Fix check for unique roles per event

2 months agoUpdate roles docs to note that roles apply to feeding station attendance
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 19:18:25 +0000 (19:18 +0000)]
Update roles docs to note that roles apply to feeding station attendance

2 months agoUpdate diagrams for event based attendance design
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 19:09:57 +0000 (19:09 +0000)]
Update diagrams for event based attendance design

Split ATTENDANCE table, creating ARRIVALS_A, an attendance arrival
and departure event table.

2 months agoGrammer
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 19:06:15 +0000 (19:06 +0000)]
Grammer

2 months agoUse macro to enforce Certainty = sdb_identity_certain
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 19:04:31 +0000 (19:04 +0000)]
Use macro to enforce Certainty = sdb_identity_certain

2 months agoUse macro to enforce Start = Stop
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 19:01:22 +0000 (19:01 +0000)]
Use macro to enforce Start = Stop

2 months agoShorten EVENTS.Behavior constraint name to fit within limits
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 17:30:22 +0000 (17:30 +0000)]
Shorten EVENTS.Behavior constraint name to fit within limits

Unfortunately, there is not enough space to list the allowed
behavior codes.  The user will just have to refer to the documentaion
when they violate the constraint.

2 months agoAllow the EVENT.Behavior to be sdb_groom_scan
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 17:27:23 +0000 (17:27 +0000)]
Allow the EVENT.Behavior to be sdb_groom_scan

2 months agoGive time precision docs their own section
Karl O. Pinc kop@karlpinc.com [Mon, 1 Jun 2026 04:55:59 +0000 (04:55 +0000)]
Give time precision docs their own section

2 months agoHyperlink to tables that have been documented
Karl O. Pinc kop@karlpinc.com [Sun, 31 May 2026 22:00:43 +0000 (22:00 +0000)]
Hyperlink to tables that have been documented

2 months agoMove docs of sdb_actor, sdb_actee, and sdb_mutual into ROLE_CODES
Karl O. Pinc kop@karlpinc.com [Sun, 31 May 2026 21:19:58 +0000 (21:19 +0000)]
Move docs of sdb_actor, sdb_actee, and sdb_mutual into ROLE_CODES

2 months agoUpdate copyright date
Karl O. Pinc kop@karlpinc.com [Sun, 31 May 2026 13:20:10 +0000 (13:20 +0000)]
Update copyright date

2 months agoGrammar
Karl O. Pinc kop@karlpinc.com [Sun, 31 May 2026 13:17:21 +0000 (13:17 +0000)]
Grammar

2 months agoMake sdb_mutual (Mutual) a special ROLE_CODES.Role value
Karl O. Pinc kop@karlpinc.com [Sat, 30 May 2026 00:05:42 +0000 (00:05 +0000)]
Make sdb_mutual (Mutual) a special ROLE_CODES.Role value

When there is one participant with a sdb_mutual role, there must be
at least one other participant with this role.

2 months agoAllow EVENTS and ATTENDANCE to relate, add EVENTS.AtID column
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 17:46:05 +0000 (17:46 +0000)]
Allow EVENTS and ATTENDANCE to relate, add EVENTS.AtID column

2 months agoNew null_xor_null() macro: exactly one of 2 columns must be NULL
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 17:43:02 +0000 (17:43 +0000)]
New null_xor_null() macro: exactly one of 2 columns must be NULL

2 months agoEVENTS is to reference ATTENDANCE, so create ATTENDANCE first
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 17:35:00 +0000 (17:35 +0000)]
EVENTS is to reference ATTENDANCE, so create ATTENDANCE first

2 months agoConvert the follow_map_time_problems table into the clean schema
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 15:00:34 +0000 (15:00 +0000)]
Convert the follow_map_time_problems table into the clean schema

2 months agoWith groom scans, start must equal stop
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 13:04:55 +0000 (13:04 +0000)]
With groom scans, start must equal stop

2 months agoChange table name GROOM_SCANS -> GROOM_SCANS_B
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 00:53:15 +0000 (00:53 +0000)]
Change table name GROOM_SCANS -> GROOM_SCANS_B

2 months agoReplace "estrus" with "swelling", FEMALE_STATES -> REPRO_STATES
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 00:34:56 +0000 (00:34 +0000)]
Replace "estrus" with "swelling", FEMALE_STATES -> REPRO_STATES

2 months agoChange "estrus" to "swelling" in ESTRUS_STATES names
Karl O. Pinc kop@karlpinc.com [Thu, 28 May 2026 00:17:42 +0000 (00:17 +0000)]
Change "estrus" to "swelling" in ESTRUS_STATES names

2 months agoTalk about "swelling" not "estrus" in the CYCLE_STATES docs
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 23:57:36 +0000 (23:57 +0000)]
Talk about "swelling" not "estrus" in the CYCLE_STATES docs

2 months agoChange global constant name sdb_manual_estrus -> sdb_manual_swelling
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 23:53:02 +0000 (23:53 +0000)]
Change global constant name sdb_manual_estrus -> sdb_manual_swelling

2 months agoChange "estrus" to "swelling" in ESTRUS_SOURCES names
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 23:33:32 +0000 (23:33 +0000)]
Change "estrus" to "swelling" in ESTRUS_SOURCES names

2 months agoFix so FOLLOWS.CommID is validated against COMM_IDS
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 19:59:47 +0000 (19:59 +0000)]
Fix so FOLLOWS.CommID is validated against COMM_IDS

2 months agoChange column name: FOLLOWS.Community -> CommID
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 23:46:36 +0000 (23:46 +0000)]
Change column name: FOLLOWS.Community -> CommID

Make consistent with other column names.  Per 2026-05-26 meeting.

2 months agoFix copyright dates
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 19:50:08 +0000 (19:50 +0000)]
Fix copyright dates

2 months agoChange column name: AGGRESSIONS.Community ->CommID
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 19:41:29 +0000 (19:41 +0000)]
Change column name: AGGRESSIONS.Community ->CommID

Make consistent with other column names.  Per 2026-05-26 meeting.

2 months agoChange column name: AGGRESSION_EVENT_LOG.Community ->CommID
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 19:27:09 +0000 (19:27 +0000)]
Change column name: AGGRESSION_EVENT_LOG.Community ->CommID

Make consistent with other column names.  Per 2026-05-26 meeting.

2 months agoCreate, document, index, and trigger ATTENDANCE
Karl O. Pinc kop@karlpinc.com [Wed, 27 May 2026 19:07:02 +0000 (19:07 +0000)]
Create, document, index, and trigger ATTENDANCE

2 months agoIncrease maximum FOOD_EVENTS per EVENTS row
Karl O. Pinc kop@karlpinc.com [Tue, 26 May 2026 19:07:49 +0000 (19:07 +0000)]
Increase maximum FOOD_EVENTS per EVENTS row

Some of the MS Access columns have semi-colons separating food values,
so instead of 2 values to go with the 2 MS Access columns we need
4 possible values.

2 months agoAdd ATTENDANCE to demography ER diagram
Karl O. Pinc [Mon, 25 May 2026 22:54:56 +0000 (17:54 -0500)]
Add ATTENDANCE to demography ER diagram

2 months agoRemove estrus tables from demography ER diagram
Karl O. Pinc [Mon, 25 May 2026 21:55:13 +0000 (16:55 -0500)]
Remove estrus tables from demography ER diagram

2 months agoTable qualify column names for clarity
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 18:22:33 +0000 (18:22 +0000)]
Table qualify column names for clarity

2 months agoCreate, document, index, and trigger GROOM_SCANS
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 18:12:49 +0000 (18:12 +0000)]
Create, document, index, and trigger GROOM_SCANS

2 months agoTypos
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 18:10:17 +0000 (18:10 +0000)]
Typos

2 months agoEVENTS.Start and Stop have semantics that depend on the behavior
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 17:53:15 +0000 (17:53 +0000)]
EVENTS.Start and Stop have semantics that depend on the behavior

2 months agoLink to the detailed description of behavior codes
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 17:51:41 +0000 (17:51 +0000)]
Link to the detailed description of behavior codes

2 months agoAdd GROOM_SCANS to the Events ER diagram
Karl O. Pinc [Mon, 25 May 2026 17:39:47 +0000 (12:39 -0500)]
Add GROOM_SCANS to the Events ER diagram

2 months agoAdjust data integrity rules to allow "other" grooming participants
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 17:24:08 +0000 (17:24 +0000)]
Adjust data integrity rules to allow "other" grooming participants

2 months agoRemoved dropped GROOMINGS.Other column
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 16:55:46 +0000 (16:55 +0000)]
Removed dropped GROOMINGS.Other column

2 months agoRemove index from dropped columns
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 16:52:50 +0000 (16:52 +0000)]
Remove index from dropped columns

2 months agoGeneralize EVENTS.Certainty description
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 16:27:23 +0000 (16:27 +0000)]
Generalize EVENTS.Certainty description

2 months agoDocument Observer check on transaction commit
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 15:00:13 +0000 (15:00 +0000)]
Document Observer check on transaction commit

2 months agoAdd female reproductive ER diagram to docs
Karl O. Pinc kop@karlpinc.com [Mon, 25 May 2026 14:40:24 +0000 (14:40 +0000)]
Add female reproductive ER diagram to docs

2 months agoA ER diagram related to female sexual cycling
Karl O. Pinc [Mon, 25 May 2026 14:29:07 +0000 (09:29 -0500)]
A ER diagram related to female sexual cycling

We'll see if we want to keep this.  For the hot minute, the
estrus states are left on the demography ER diagram.

2 months agoDrop GROOMINGS.Other column
Karl O. Pinc [Sun, 24 May 2026 01:00:01 +0000 (20:00 -0500)]
Drop GROOMINGS.Other column

2 months agoCreate, document, index, and trigger GROOMINGS
Karl O. Pinc kop@karlpinc.com [Sat, 23 May 2026 23:36:03 +0000 (23:36 +0000)]
Create, document, index, and trigger GROOMINGS

2 months agoThe ROLES.Role of sdb_actor and sdb_actee must occur in pairs
Karl O. Pinc kop@karlpinc.com [Sat, 23 May 2026 21:04:40 +0000 (21:04 +0000)]
The ROLES.Role of sdb_actor and sdb_actee must occur in pairs

2 months agoRemove hardcoding of aggression event
Karl O. Pinc kop@karlpinc.com [Thu, 21 May 2026 23:26:38 +0000 (23:26 +0000)]
Remove hardcoding of aggression event

We will need to execute this code to support grooming events.

2 months agoPrevent updates to ROLES.Role
Karl O. Pinc kop@karlpinc.com [Thu, 21 May 2026 23:25:39 +0000 (23:25 +0000)]
Prevent updates to ROLES.Role

2 months agoThere can only be one individual related to a food event
Karl O. Pinc kop@karlpinc.com [Thu, 21 May 2026 23:08:30 +0000 (23:08 +0000)]
There can only be one individual related to a food event

2 months agoThe individual consuming the food must be the focal
Karl O. Pinc kop@karlpinc.com [Wed, 20 May 2026 15:12:04 +0000 (15:12 +0000)]
The individual consuming the food must be the focal

2 months agoDeclare variables needed to to check focal participantion as globals
Karl O. Pinc kop@karlpinc.com [Wed, 20 May 2026 14:40:49 +0000 (14:40 +0000)]
Declare variables needed to to check focal participantion as globals

2 months agoPlace an upper limit (2) on the foods consumed per food event
Karl O. Pinc kop@karlpinc.com [Wed, 20 May 2026 14:25:28 +0000 (14:25 +0000)]
Place an upper limit (2) on the foods consumed per food event

2 months agoFix markup
Karl O. Pinc kop@karlpinc.com [Mon, 18 May 2026 16:16:30 +0000 (16:16 +0000)]
Fix markup

2 months agoGive unique indexes descriptive names
Karl O. Pinc kop@karlpinc.com [Mon, 18 May 2026 15:53:44 +0000 (15:53 +0000)]
Give unique indexes descriptive names

The user can see these names on index violations, which are db rule
integrity violations.  Give them a clue as to what the probem is.

2 months agoAn individual can only appear in an event once
Karl O. Pinc kop@karlpinc.com [Mon, 18 May 2026 15:27:52 +0000 (15:27 +0000)]
An individual can only appear in an event once

2 months agoCorrect markup, improve text of "participant must be studyed" paragraph
Karl O. Pinc kop@karlpinc.com [Mon, 18 May 2026 15:02:51 +0000 (15:02 +0000)]
Correct markup, improve text of "participant must be studyed" paragraph

3 months agoMove the "not there" warning from AGGRESSIONS to ROLES
Karl O. Pinc kop@karlpinc.com [Sun, 17 May 2026 00:48:25 +0000 (00:48 +0000)]
Move the "not there" warning from AGGRESSIONS to ROLES

3 months agoChange GROOMINS.Others -> Other in ER diagram
Karl O. Pinc kop@karlpinc.com [Sun, 17 May 2026 00:38:43 +0000 (00:38 +0000)]
Change GROOMINS.Others -> Other in ER diagram

3 months agoRemove extra words
Karl O. Pinc kop@karlpinc.com [Sat, 16 May 2026 17:12:53 +0000 (17:12 +0000)]
Remove extra words

3 months agoImprove AGGRESSIONS docs
Karl O. Pinc kop@karlpinc.com [Sat, 16 May 2026 12:10:40 +0000 (12:10 +0000)]
Improve AGGRESSIONS docs

Based on Ian's review of 2026-05-15

3 months agoAllow aggression event logs back to 1960
Karl O. Pinc kop@karlpinc.com [Sat, 16 May 2026 11:58:28 +0000 (11:58 +0000)]
Allow aggression event logs back to 1960

Per Ian's review of 2026-05-15

3 months agoRemove GROOMINGS.TimeCertainty and Duplicate columns, add Problems
Karl O. Pinc [Fri, 15 May 2026 01:30:20 +0000 (20:30 -0500)]
Remove GROOMINGS.TimeCertainty and Duplicate columns, add Problems

3 months agoAdd new columns to AGGRESSIONS ER diagram
Karl O. Pinc [Thu, 14 May 2026 20:43:53 +0000 (15:43 -0500)]
Add new columns to AGGRESSIONS ER diagram

3 months agoCreate, document, index, and trigger FOOD_EVENTS
Karl O. Pinc kop@karlpinc.com [Thu, 14 May 2026 20:04:00 +0000 (20:04 +0000)]
Create, document, index, and trigger FOOD_EVENTS

3 months agoFix "must" v.s. "should" wording
Karl O. Pinc kop@karlpinc.com [Thu, 14 May 2026 19:25:42 +0000 (19:25 +0000)]
Fix "must" v.s. "should" wording

3 months agoDocument the transaction concept
Karl O. Pinc kop@karlpinc.com [Thu, 14 May 2026 17:27:11 +0000 (17:27 +0000)]
Document the transaction concept

3 months agoBetter handle :ref:s that show up in sentences
Karl O. Pinc kop@karlpinc.com [Thu, 14 May 2026 19:16:07 +0000 (19:16 +0000)]
Better handle :ref:s that show up in sentences

3 months agoFix hyperlink
Karl O. Pinc kop@karlpinc.com [Thu, 14 May 2026 16:16:44 +0000 (16:16 +0000)]
Fix hyperlink

3 months agoCreate, document, and index FOOD_NAMES table
Karl O. Pinc kop@karlpinc.com [Thu, 14 May 2026 00:00:07 +0000 (00:00 +0000)]
Create, document, and index FOOD_NAMES table

3 months agoCreate, document, and index FOOD_PARTS table
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 23:58:49 +0000 (23:58 +0000)]
Create, document, and index FOOD_PARTS table

3 months agoNew macro: positive_check() Checks a column is a positive number
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 23:53:14 +0000 (23:53 +0000)]
New macro: positive_check()  Checks a column is a positive number

3 months agoGet rid of trailing spaces
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 23:51:44 +0000 (23:51 +0000)]
Get rid of trailing spaces

3 months agoAlphabetize by code table name
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 23:49:54 +0000 (23:49 +0000)]
Alphabetize by code table name

3 months agoRe-arrange the overview paragraphs
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 23:03:47 +0000 (23:03 +0000)]
Re-arrange the overview paragraphs

3 months agoBetter docs regards EVENTS.Behavior codes and the event detail tables
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 23:01:24 +0000 (23:01 +0000)]
Better docs regards EVENTS.Behavior codes and the event detail tables

3 months agoIndex AGGRESSIONS
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 22:33:34 +0000 (22:33 +0000)]
Index AGGRESSIONS

3 months agoChange note regarding extracted text into a sidebar
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 22:29:04 +0000 (22:29 +0000)]
Change note regarding extracted text into a sidebar

3 months agoIndex SIGHTINGS
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 22:12:46 +0000 (22:12 +0000)]
Index SIGHTINGS

3 months agoExplicitly document that SIGHTINGS.AnimID and Date pair must be unique
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 22:07:03 +0000 (22:07 +0000)]
Explicitly document that SIGHTINGS.AnimID and Date pair must be unique

3 months agoFix SIGHTINGS.Date link text in RST references
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 22:05:28 +0000 (22:05 +0000)]
Fix SIGHTINGS.Date link text in RST references

3 months agoCreate SIGHTINGS trigger
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 20:19:32 +0000 (20:19 +0000)]
Create SIGHTINGS trigger

3 months agoPut lower bound on SIGHTINGS.Date
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 20:15:44 +0000 (20:15 +0000)]
Put lower bound on SIGHTINGS.Date

3 months agoAdd note documenting relations between extracted AGGRESSIONS columns
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 19:40:22 +0000 (19:40 +0000)]
Add note documenting relations between extracted AGGRESSIONS columns

Document that AGGRESSIONS FullAccount, AggressorBehavior, and
RecipientBehavior can all be duplicate information.

3 months agoAdd the AGGRESSIONS.RecipientBehavior column
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 19:39:16 +0000 (19:39 +0000)]
Add the AGGRESSIONS.RecipientBehavior column

3 months agoAdd the AGGRESSIONS.AggressorBehavior column
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 19:38:53 +0000 (19:38 +0000)]
Add the AGGRESSIONS.AggressorBehavior column

3 months agoAdd the AGGRESSIONS.FullAccount column
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 19:37:45 +0000 (19:37 +0000)]
Add the AGGRESSIONS.FullAccount column

3 months agoFix AGGRESSIONS substituition references' anchors
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 18:30:15 +0000 (18:30 +0000)]
Fix AGGRESSIONS substituition references' anchors

3 months agoFix RST syntax
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 18:27:07 +0000 (18:27 +0000)]
Fix RST syntax

3 months agoHave AGGRESSIONS.Severity validate off the AGG_SEVERITIES table
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 17:58:37 +0000 (17:58 +0000)]
Have AGGRESSIONS.Severity validate off the AGG_SEVERITIES table

The clean.ae_fight_category column needs to have a single space
normalized to NULL.

3 months agoCreate and document the AGG_SEVERITIES table
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 17:52:36 +0000 (17:52 +0000)]
Create and document the AGG_SEVERITIES table

3 months agoFor aggressions, EVENTS.Certainty is the certainty of the recipient
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 17:16:24 +0000 (17:16 +0000)]
For aggressions, EVENTS.Certainty is the certainty of the recipient

After phone discussion with Ian, 2026-05-13.

The MS Access aggression_event.ae_recipient_certainty_flag column
will need to be normalized to 'Y' and 'N' in the "clean" schema.
NULL and N means false, Y and X means true.  And some other
illegitimate values exist.

3 months agoUse better SQL literal syntax
Karl O. Pinc kop@karlpinc.com [Wed, 13 May 2026 17:14:13 +0000 (17:14 +0000)]
Use better SQL literal syntax